#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>//这里是pid_t的头文件
#include <stdlib.h>
int main()
{
  pid_t id = fork();
  if(id==0)
  {
    //子进程
    int cnt = 30;
    while(cnt--)
    {
      printf("我是子进程，我的进程id是%d，%d秒后结束进程\n",getpid(),cnt);
      sleep(1);
     
    }
    exit(10);
  }
  else if(id>0)
  {
    int status = 0; 
    printf("我是父进程，我正在等待子进程的结束\n");
    sleep(35);
    pid_t ret = waitpid(id,&status,0);//status会自己从子进程的pcb中获取子进程的退出信息，options为0是阻塞等待
    sleep(20);
    
    printf("已经回收子进程%d,子进程退出码是%d,退出信号为%d\n",ret,(status>>8)&0xFF,status&0x7F);
  }

  return 0;
}
